﻿using System;
using System.Collections.Generic;
using System.Data.Entity.ModelConfiguration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Delphi.Mimir.Data.Entities.Final.Mappings {
    public class LoadMap : EntityTypeConfiguration<Load> {
        public LoadMap() {
            /******************************************************************
            /* Table
            /*****************************************************************/
            ToTable("fin.eod_loads");

            /******************************************************************
            /* Primary Key
            /*****************************************************************/
            HasKey(a => a.LoadId);

            /******************************************************************
            /* Index
            /*****************************************************************/
            // None

            /******************************************************************
            /* Relationships
            /*****************************************************************/
            // n..1 LoadControl
            HasRequired<LoadControl>(a => a.LoadControl)
                .WithMany()
                .HasForeignKey(a => a.LoadControlId);

            /******************************************************************
            /* Properties
            /*****************************************************************/
            Property(a => a.LoadId)
                .IsRequired()
                .HasColumnName("lod_id");

            Property(a => a.LoadControlId)
                .IsRequired()
                .HasColumnName("lod_lcl_id");

            Property(a => a.LoadTime)
                .IsRequired()
                .HasColumnName("lod_load_ts");

            Property(a => a.TradeDate)
                .IsOptional()
                .HasColumnType("date")
                .HasColumnName("lod_trade_dt");

            Property(a => a.Status)
                .IsOptional()
                .IsUnicode(false)
                .HasMaxLength(250)
                .HasColumnName("lod_status_desc");

            Property(a => a.Records)
                .IsOptional()
                .HasColumnName("lod_records_count");
        }
    }
}
